//单列模式

// 1.饿汉模式
class Singleton {
    //把自己创建成类成员具有唯一性
    public static Singleton instance  = new Singleton();

    //通过这个方法来获取对象
    public static Singleton getInstance() {
        return instance;
    }

    //添加私有的构造就不能通过其他方法来创建对象     外在的约束条件来避免错误的操作
    private Singleton() {

    }
}

//2.懒汉模式
class SingletonLazy {

    private static SingletonLazy singletonLazy = null;

    public static SingletonLazy instance() {
        if(singletonLazy == null) {
            singletonLazy = new SingletonLazy();
        }
        return singletonLazy;
    }
}

public class Demo1 {
    public static void main(String[] args) {

        Singleton singleton = Singleton.getInstance();
        Singleton singleton1 = Singleton.getInstance();

        //证明获取的是唯一的对象
        System.out.println(singleton == singleton1);

        //也不可通过其他方法创建对象
        //Singleton singleton2 = new Singleton();
    }
}
